<?php 

	/**
	 * message.class.php
	 *
	 * description : Gestion des messages
	 * 				 class abstraite (qui ne peut avoir d'héritier accessible) 
	 * 				 l'accès est public et en mode static
 	 *
 	 * @package SMARTBOK
	 * @copyright DGFIP
 	 * @author christophe.hebet
 	 */
	abstract class SmartbokMessage
	{
		/**
		 * Constantes de classe
		 */
    	const ERR 	= 	"1";
    	const ALERT = 	"2"; 
    	const INFO  =	"3";
    
    	/**
    	 * Tableau des messages smartbok
    	 * contient un sous ensemble apr type d'erreur (erreur, alert, info);
    	 * @var array
    	 */
    	public static $aSmartbokMessages;
    	
    	/**
    	 * tableau des champs d'affichage des messages
    	 * @var array
    	 */
    	private static $aMsg = array(self::ERR => 'erreur',
    	                      self::ALERT => 'alert',
    	                      self::INFO => 'info');
    
    	/**
    	 * Ajouter un message
    	 * 
    	 * @param integer 	$iType		categorie de message 
    	 * @param string	$sMessage	libelle du message
    	 */
    	public static function addMessage($iType, $sMessage) 
    	{
        	switch ($iType) {
        		
            	case self::ERR :
                	self::$aSmartbokMessages["erreur"][] = $sMessage;
                	break;
                	
            	case self::ALERT :
                	self::$aSmartbokMessages["alert"][] = $sMessage;
                	break;
                	
            	case self::INFO;
                	self::$aSmartbokMessages["info"][] = $sMessage;
                	break;
        	}
    	}
    	
    	/**
    	 * Vide le tableau des messages pour ne garder que le message en paramètre.
    	 * 
    	 * Si le tableau contient le message passé en paramètre, alros la fonction vide le tableau 
    	 * et ajotue le message en paramètre.
    	 * 
    	 * @param integer $iType
    	 * @param string $sMessage
    	 */
    	public static function supprimerTousMessagesSauf($iType, $sMessage) {
    	    $bMsg = false;
    	    foreach (self::$aSmartbokMessages[self::$aMsg[$iType]] as $sMsg){    	       
    	        if ($sMsg === $sMessage)
    	        {
    	            $bMsg = true;
    	            break;    	            
    	            //unset(self::$aSmartbokMessages[]);
    	        }    	        
    	    }
    	    if ($bMsg){
    	        self::$aSmartbokMessages = null;
    	        self::addMessage($iType, $sMessage);
    	    }
    	}
	}